iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
0

Android framework 管理UI(如 Activity 和 Fragment)的生命週期,如銷毀或重新創建,不會受到使用者操作或手機事件影響。

使用需先 import

dependencies {
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
}

ViewModel 存在生命週期是在 ViewModel 透過 ViewModelProvider 建立開始齊生命。 ViewModel 會一直留在內存,直到其存在範圍的 Lifecycle 銷毀,如 Activity,是在 Activity 完成時 ,而 Fragment,是在 Fragment 離開時。

ViewModel 的生命周期
ViewModel 的生命周期

動手做看看

首先建立ViewModel,view 顯示標題 與子項募資酪

class TodoViewModel: ViewModel() {

    var todos = listOf<Todo>(Todo.Title("記事本"))
        
    private var count = 0

    fun addNewTodo() {
        val todo = Todo.Item("note $count", false)
        todos = todos.toMutableList().apply {
            add(todo)
        }
        count ++
    }
}

在 要使用的 MainActivity,使用ViewModelProvider

class MainActivity : AppCompatActivity() {

 override fun onCreate(savedInstanceState: Bundle?) {
    val adapter = TodoAdapter()
    recyclerView.adapter = adapter
    ........
    val todoViewModel = ViewModelProvider(this).get<TodoViewModel>()
    adapter.submitList(todoViewModel.todos)
    
    //點擊新增項目
      buttonAdd.setOnClickListener {
            todoViewModel.addNewTodo()
            adapter.submitList(todoViewModel.todos)
        }
     }
}

reference:https://developer.android.com/topic/libraries/architecture/viewmodel
reference:https://developer.android.com/reference/androidx/lifecycle/ViewModelProvider
reference:https://www.notion.so/LiveData-and-viewModel-9-2-bfb163f6dbfc4a71b2388538514de089


上一篇
<Day18>Android Architecture Components
下一篇
<Day20> lifecycle-aware 元件
系列文
Android App 初學者從零開始用Kotlin寫APP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言